﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace sistem
{
    public partial class DodavanjePredmetaForma : Form
    {
        private List<Profesor> data = new List<Profesor>();
        private List<Profesor> fakePointer = new List<Profesor>();
        private AdministratorPredmetiKontrola afm = new AdministratorPredmetiKontrola();

        public DodavanjePredmetaForma(AdministratorPredmetiKontrola af)
        {
            InitializeComponent();
            afm = af;
        }

        private void DodavanjePredmetaForma_Load(object sender, EventArgs e)
        {
            try
            {
                DAL.DAL d = DAL.DAL.Instanca;
                d.kreirajKonekciju("127.0.0.1", "skola", "root", "");
                data = d.getDAO.getProfesorDAO().getAll();
                d.terminirajKonekciju();
                comboBox1.DataSource = data;
                comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
            }
            catch (Exception)
            {
                MessageBox.Show("Došlo je do pogreške prilikom rada s bazom podataka", "Greška", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private bool ValidacijaPredmeta()
        {
            bool trigger = true;
            if (TB_PuniNaziv.Text == "")
            {
                trigger = false;
                errorProvider1.SetError(TB_PuniNaziv, "Puni naziv predmeta je obavezan");
            }
            if (TB_SkraceniNaziv.Text == "")
            {
                trigger = false;
                errorProvider1.SetError(TB_SkraceniNaziv, "Skraceni naziv predmeta je obavezan");
            }
            if (TB_Opis.Text == "")
            {
                trigger = false;
                errorProvider1.SetError(TB_Opis, "Opis predmeta je obavezan");
            }
            if (listBox1.Items.Count == 0)
            {
                trigger = false;
                errorProvider1.SetError(listBox1, "Predmet mora imati bar jednog profesora predavača");
            }
            return trigger;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem != null)
            {
                listBox1.Items.Add(comboBox1.SelectedItem);
                data.RemoveAt(comboBox1.SelectedIndex);
                comboBox1.DataSource = fakePointer;
                comboBox1.DataSource = data;
                comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
            }
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex != -1)
            {
                data.Add((Profesor)listBox1.SelectedItem);
                listBox1.Items.RemoveAt(listBox1.SelectedIndex);
                comboBox1.DataSource = fakePointer;
                comboBox1.DataSource = data;
                comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                bool var1 = ValidacijaPredmeta();
                if (var1)
                {
                    Predmet predmet = new Predmet();
                    predmet.PuniNaziv = TB_PuniNaziv.Text;
                    predmet.SkraceniNaziv = TB_SkraceniNaziv.Text;
                    predmet.Opis = TB_Opis.Text;
                    DAL.DAL d = DAL.DAL.Instanca;
                    d.kreirajKonekciju("127.0.0.1", "skola", "root", "");
                    int predmetID = Convert.ToInt32(d.getDAO.getPredmetDAO().create(predmet));
                    for (int i = 0; i < listBox1.Items.Count; i++)
                    {
                        ProfesorPredmetVeza veza = new ProfesorPredmetVeza();
                        Profesor profesor = (Profesor)listBox1.Items[i];
                        veza.PredmetID = predmetID;
                        veza.ProfesorID = profesor.ID;
                        d.getDAO.getProfesorPredmetVezaDAO().create(veza);
                    }
                    d.terminirajKonekciju();
                    MessageBox.Show("Predmet je uspješno dodan u bazu podataka", "Poruka", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                }
            }
            catch (MySqlException Ex)
            {
                //errorProvider1.SetError(TB_PuniNaziv, "Predmet sa istim nazivom već postoji");
                MessageBox.Show(Ex.Message);
            }
            catch (Exception)
            {
                MessageBox.Show("Došlo je do pogreške prilikom rada s bazom podataka", "Greška", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void DodavanjePredmetaForma_FormClosed(object sender, FormClosedEventArgs e)
        {
            afm.FormReload();
        }
    }
}
